Инструкция по установке EAI почтового сервера под ОС Ubuntu 22.04 LTS: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
(не показано 5 промежуточных версий этого же участника) | |||
Строка 9: | Строка 9: | ||
== Подготовка системы == | == Подготовка системы == | ||
1. Авторизуемся на удаленном сервере | |||
<pre>ssh root@62.109.26.140</pre> | |||
2. Обновляем систему | |||
<pre>apt update && apt upgrade -y && apt full-upgrade -y && apt dist-upgrade -y</pre> | |||
3. Очищаем систему | |||
<pre>apt autoremove -y && apt clean -y && apt autoclean -y</pre> | |||
4. Обновляем корневые сертификаты | |||
<pre>update-ca-certificates</pre> | |||
5. Устанавливаем необходимые утилиты | |||
<pre>apt install nano wget net-tools -y</pre> | |||
6. Настраиваем часовой пояс | |||
<pre>timedatectl set-timezone Europe/Moscow</pre> | |||
7. Настраиваем имя хоста | |||
hostnamectl set-hostname xn----gtbdaqueeage2s.xn--p1ai | |||
nano -l /etc/hosts | |||
8. и вносим | |||
127.0.0.1 localhost xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф | |||
127.0.1.1 xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф | |||
62.109.26.140 xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф | |||
9. Проверяем имя хоста | |||
<pre>hostname</pre> | |||
10. Перезагружаем систему | |||
<pre>reboot</pre> | |||
== Установка программных компонент == | == Установка программных компонент == | ||
1. Устанавливаем необходимые пакеты Dovecot, Postfix и MariaDB | |||
<pre>cd && apt install postfix dovecot-core dovecot-imapd dovecot-lmtpd dovecot-pop3d mariadb-server dovecot-mysql postfix-mysql mailutils -y</pre> | |||
2. во время установки выбираем Internet Site и указываем имя домена xn----gtbdaqueeage2s.xn--p1ai | |||
3. Запускаем сервисы, включаем автозапуск и проверяем их статус | |||
systemctl start postfix && systemctl start dovecot && systemctl start mariadb | |||
systemctl enable postfix && systemctl enable dovecot && systemctl enable mariadb | |||
systemctl status postfix | |||
systemctl status dovecot | |||
systemctl status mariadb | |||
4. Отправляем тестовое письмо | |||
<pre>echo "Test mail" | mail -s "Test mail" happyzomb@ya.ru</pre> | |||
5. Настраиваем поддержку кодировки базы данных | |||
<pre>nano /etc/mysql/my.cnf</pre> | |||
6. и добавляем: | |||
[mysqld] | |||
character-set-server = utf8 | |||
collation-server = utf8_general_ci | |||
skip-character-set-client-handshake | |||
bind-address=127.0.0.1 | |||
datadir=/var/lib/mysql | |||
log-error=/var/log/mariadb.log | |||
pid-file=/tmp/mariadb.pid | |||
7. Завершаем установку MariaDB и проверяем статус службы | |||
<pre>usermod -d /var/lib/mysql/ mysql</pre><pre>systemctl restart mariadb && systemctl status mariadb | grep Active</pre> | |||
8. Проверяем, что службы Postfix, Dovecot и MariaDB запущены и слушают соответствующие порты | |||
<pre>netstat -tulnp</pre> | |||
== Настройка базы данных == | == Настройка базы данных == | ||
1. Авторизуемся в MariaDB | |||
<pre>mysql -u root -p</pre> | |||
2. Создаем базу данных для Dovecot | |||
<pre>CREATE DATABASE eaimail;</pre> | |||
3. Выбираем базу данных | |||
<pre>USE eaimail;</pre> | |||
4. Настраиваем доступ | |||
<pre> | |||
GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'dbuser'@'localhost' IDENTIFIED BY '6y5ljiB9j3M7'; | |||
GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'dbuser'@'localhost.localdomain' IDENTIFIED BY '6y5ljiB9j3M7'; | |||
FLUSH PRIVILEGES; | |||
SHOW GRANTS FOR 'dbuser'@'localhost'; | |||
</pre> | |||
5. Создаем таблицы | |||
<pre>CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) ); | |||
CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) ); | |||
CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) ); | |||
</pre> | |||
6. Добавляем значения имени домена и адресов электронной почты | |||
<pre>INSERT INTO domains (domain) VALUES ('xn----gtbdaqueeage2s.xn--p1ai'); | |||
INSERT INTO domains (domain) VALUES ('доменное-имя.рф'); | |||
INSERT INTO users (email, password) VALUES ('info@xn----gtbdaqueeage2s.xn--p1ai', ENCRYPT('6y5ljiB9j3M7')); | |||
INSERT INTO users (email, password) VALUES ('info@доменное-имя.рф', ENCRYPT('6y5ljiB9j3M7')); | |||
</pre> | |||
7. Настраиваем переадресацию | |||
<pre>INSERT INTO forwardings (source,destination) VALUES ('info@доменное-имя.рф','info@xn----gtbdaqueeage2s.xn--p1ai');</pre> | |||
8. Выходим <pre>quit</pre> | |||
== Настройка почтового сервера == | == Настройка почтового сервера == | ||
Строка 301: | Строка 375: | ||
</VirtualHost> | </VirtualHost> | ||
</pre> | </pre> | ||
15. Перезапускаем Apache и проверяем статус службы | |||
systemctl reload apache2 && systemctl status apache2 | |||
16. Отключаем авторизацию Roundcube в почтовый сервер, так как почтовый сервер находится на localhost | |||
nano /var/www/html/config/defaults.inc.php | |||
17. и изменяем: | |||
$config['smtp_user'] = ''; | |||
$config['smtp_pass'] = ''; | |||
18. Переходим по ссылке и завершаем установку Roundcube | |||
http://доменное-имя.рф/installer/ | |||
19. В качестве адресов подключения указываем localhost, порт 143 для входящей электронной почты и 25 для исходящей | |||
20. Проходим тесты подключения и завершаем настройку, затем переименовываем папку installer командой: | |||
mv /var/www/html/installer/ /var/www/html/installer_old/ | |||
== Настройка межсетевого экрана == | |||
1. Настраиваем фаерволл | |||
apt install ufw -y | |||
2. Настраиваем правила фаерволла | |||
ufw default deny incoming && ufw default allow outgoing | |||
ufw allow 22 && ufw allow 25 && ufw allow 80 && ufw allow 443 && ufw allow 465 && ufw allow 143 && ufw allow 993 && ufw allow 995 | |||
ufw enable | |||
3. Проверяем список правил и статус службы фаерволла | |||
ufw verbose numbered | |||
systemctl status ufw | |||
4. Установка и настройка завершена! Перезагружаем удаленный сервер | |||
reboot | |||
5. Авторизация в веб-интерфейсе Roundcube должна работать для обоих адресов - info@xn----gtbdaqueeage2s.xn--p1ai и info@доменное-имя.рф. При отправке писем на любой из этих адресов письма должны доходить равнозначно! |
Текущая версия от 13:23, 27 июня 2022
Установка EAI почтового сервера
С помощью данной инструкции вы сможете установить почтовый сервер с поддержкой использования интернационализированных адресов электронной почты (EAI) на базе ПО с открытым исходным кодом. Почтовый сервер можно развивать далее с помощью другого ПО. Хостинг-провайдер должен изменить PTR-запись для домена на ваш IDN-домен. Проверить запись PTR можно при помощи любого внешнего инструмента.
Например: https://www.whatsmydns.net/#PTR/62.109.26.140
Подготовка системы
1. Авторизуемся на удаленном сервере
ssh root@62.109.26.140
2. Обновляем систему
apt update && apt upgrade -y && apt full-upgrade -y && apt dist-upgrade -y
3. Очищаем систему
apt autoremove -y && apt clean -y && apt autoclean -y
4. Обновляем корневые сертификаты
update-ca-certificates
5. Устанавливаем необходимые утилиты
apt install nano wget net-tools -y
6. Настраиваем часовой пояс
timedatectl set-timezone Europe/Moscow
7. Настраиваем имя хоста
hostnamectl set-hostname xn----gtbdaqueeage2s.xn--p1ai nano -l /etc/hosts
8. и вносим
127.0.0.1 localhost xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф 127.0.1.1 xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф 62.109.26.140 xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф
9. Проверяем имя хоста
hostname
10. Перезагружаем систему
reboot
Установка программных компонент
1. Устанавливаем необходимые пакеты Dovecot, Postfix и MariaDB
cd && apt install postfix dovecot-core dovecot-imapd dovecot-lmtpd dovecot-pop3d mariadb-server dovecot-mysql postfix-mysql mailutils -y
2. во время установки выбираем Internet Site и указываем имя домена xn----gtbdaqueeage2s.xn--p1ai
3. Запускаем сервисы, включаем автозапуск и проверяем их статус
systemctl start postfix && systemctl start dovecot && systemctl start mariadb systemctl enable postfix && systemctl enable dovecot && systemctl enable mariadb systemctl status postfix systemctl status dovecot systemctl status mariadb
4. Отправляем тестовое письмо
echo "Test mail" | mail -s "Test mail" happyzomb@ya.ru
5. Настраиваем поддержку кодировки базы данных
nano /etc/mysql/my.cnf
6. и добавляем:
[mysqld] character-set-server = utf8 collation-server = utf8_general_ci skip-character-set-client-handshake bind-address=127.0.0.1 datadir=/var/lib/mysql log-error=/var/log/mariadb.log pid-file=/tmp/mariadb.pid
7. Завершаем установку MariaDB и проверяем статус службы
usermod -d /var/lib/mysql/ mysql
systemctl restart mariadb && systemctl status mariadb | grep Active
8. Проверяем, что службы Postfix, Dovecot и MariaDB запущены и слушают соответствующие порты
netstat -tulnp
Настройка базы данных
1. Авторизуемся в MariaDB
mysql -u root -p
2. Создаем базу данных для Dovecot
CREATE DATABASE eaimail;
3. Выбираем базу данных
USE eaimail;
4. Настраиваем доступ
GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'dbuser'@'localhost' IDENTIFIED BY '6y5ljiB9j3M7'; GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'dbuser'@'localhost.localdomain' IDENTIFIED BY '6y5ljiB9j3M7'; FLUSH PRIVILEGES; SHOW GRANTS FOR 'dbuser'@'localhost';
5. Создаем таблицы
CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) ); CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) ); CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );
6. Добавляем значения имени домена и адресов электронной почты
INSERT INTO domains (domain) VALUES ('xn----gtbdaqueeage2s.xn--p1ai'); INSERT INTO domains (domain) VALUES ('доменное-имя.рф'); INSERT INTO users (email, password) VALUES ('info@xn----gtbdaqueeage2s.xn--p1ai', ENCRYPT('6y5ljiB9j3M7')); INSERT INTO users (email, password) VALUES ('info@доменное-имя.рф', ENCRYPT('6y5ljiB9j3M7'));
7. Настраиваем переадресацию
INSERT INTO forwardings (source,destination) VALUES ('info@доменное-имя.рф','info@xn----gtbdaqueeage2s.xn--p1ai');
8. Выходим
quit
Настройка почтового сервера
1. Настраиваем связь Postfix и MariaDB
nano /etc/postfix/mysql-virtual_domains.cf
2. и вносим:
user = dbuser password = 6y5ljiB9j3M7 dbname = eaimail = SELECT domain AS virtual FROM domains WHERE domain='%s' hosts = 127.0.0.1
3. Настраиваем переадресацию
nano /etc/postfix/mysql-virtual_forwardings.cf
4. и вносим:
user = dbuser password = 6y5ljiB9j3M7 dbname = eaimail query = SELECT destination FROM forwardings WHERE source='%s' hosts = 127.0.0.1
5. Настраиваем скрипт для создания виртуальных ящиков
nano /etc/postfix/mysql-virtual_mailboxes.cf
6. и вносим:
user = dbuser password = 6y5ljiB9j3M7 dbname = eaimail query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' hosts = 127.0.0.1
7. Настраиваем скрипт для переадресации на другой SMTP-сервер
nano /etc/postfix/mysql-virtual_email2email.cf
8. и вносим:
user = dbuser password = 6y5ljiB9j3M7 dbname = eaimail query = SELECT email FROM users WHERE email='%s' hosts = 127.0.0.1
9. Устанавливаем права на конфигурационные файлы Postfix
chmod 640 /etc/postfix/mysql-virtual_*.cf && chgrp postfix /etc/postfix/mysql-virtual_*.cf
10. Создаем группу и пользователя для виртуальных адресов
groupadd -g 5000 vmail && useradd -g vmail -u 5000 vmail -d /home/vmail -m
11. Настраиваем Postfix для использования виртуального алиаса домена
nano /etc/postfix/main.cf
12. и изменяем:
smtp_tls_security_level = may meta_directory = /etc/postfix shlib_directory = no myhostname = xn----gtbdaqueeage2s.xn--p1ai mydomain = xn----gtbdaqueeage2s.xn--p1ai mydestination = localhost, localhost.localdomain myorigin = $mydomain mynetworks = 127.0.0.1 smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_authenticated_header = yes broken_sasl_auth_clients = yes smtpd_use_tls = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_tls_auth_only = yes smtpd_tls_loglevel = 1 virtual_mailbox_base = /home/vmail virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_domains = доменное-имя.рф virtual_transport = dovecot virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf smtputf8_enable = yes proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
13. Настраиваем службу Postfix
nano /etc/postfix/master.cf
14. и изменяем:
smtp inet n - - - - smtpd flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
15. Настраиваем логирование Postfix, перезапускаем и проверяем службу
postconf maillog_file=/var/log/postfix.log systemctl restart postfix && systemctl status postfix
16. Настраиваем Dovecot для подключения к базе данных
nano /etc/dovecot/dovecot-sql.conf.ext
17. и вносим:
driver = mysql connect = host=127.0.0.1 dbname=eaimail user=dbuser password=6y5ljiB9j3M7 default_pass_scheme = CRYPT password_query = SELECT email as user, password FROM users WHERE email='%u';
18. Устанавливаем права CHMOD на конфигурационные файлы Dovecot
chmod 640 /etc/dovecot/dovecot-sql.conf.ext && chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext
19. Резервируем конфигурационный файл Dovecot
mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup
20. Настраиваем Dovecot
nano /etc/dovecot/dovecot.conf
21. и изменяем:
protocols = imap pop3 lmtp log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir namespace { type = private separator = . prefix = INBOX. inbox = yes } service auth { unix_listener auth-master { mode = 0600 user = vmail } unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } user = root } auth_mechanisms = plain login service auth-worker { user = root } protocol lda { log_path = /home/vmail/dovecot-deliver.log auth_socket_path = /var/run/dovecot/auth-master postmaster_address = postmaster@xn----gtbdaqueeage2s.xn--p1ai } protocol pop3 { pop3_uidl_format = %08Xu%08Xv pop3_client_workarounds = outlook-no-nuls oe-ns-eoh } passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = static args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes }
22. Перезагружаем Dovecot и проверяем статус службы
systemctl restart dovecot && systemctl status dovecot | grep Active
23. Настраиваем алиас
nano /etc/aliases
24. и добавляем:
root: postmaster@xn----gtbdaqueeage2s.xn--p1ai
25. Настраиваем логирование Dovecot
nano /etc/dovecot/conf.d/10-logging.conf
26. и добавляем:
log_path = /var/log/dovecot.log auth_verbose = yes
27. Исправляем ошибку подключения Dovecot к базе данных
nano /etc/postfix/dynamicmaps.cf
28. и заменяем:
mysql /usr/lib/postfix/postfix-mysql.so dict_mysql_open
29. Перезагружаем Postfix и Dovecot
systemctl restart postfix && systemctl restart dovecot
Настройка почтового клиента
1. Создаем базу данных для веб-интерфейса Roundcube 2. авторизуемся:
mysql -u root
3. создаем базу данных:
CREATE DATABASE roundcubedb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
4. создаем пользователя:
CREATE USER rcuser@localhost IDENTIFIED BY '6y5ljiB9j3M7';
5. предоставляем ему права к базе данных:
GRANT ALL PRIVILEGES ON roundcubedb.* TO rcuser@localhost; # Перезапускаем права FLUSH PRIVILEGES; # Выходим quit
6. Устанавливаем Apache и PHP для веб-интерфейса Roundcube
apt install apache2 php8.1 php8.1-gd php8.1-common php-json php-imagick php8.1-imap php8.1-xml php8.1-opcache php8.1-mbstring php8.1-curl php8.1-zip php8.1-ldap php8.1-mysqli php8.1-bz2 php8.1-intl -y
7. Запускаем Apache, активируем автозапуск службы и проверяем статус
systemctl start apache2 && systemctl enable apache2 && systemctl status apache2
8. Скачиваем архив с исходным кодом Roundcube
cd /tmp && wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz
9. Распаковываем архив
tar xvf roundcubemail-1.5.2-complete.tar.gz
10. Копируем файлы Roundcube в корневой каталог Apache
mv roundcubemail-1.5.2/* /var/www/html/
11. Назначаем права CHMOD на корневой каталог и файлы Roundcube
chown www-data:www-data -R /var/www && chmod -R 775 /var/www
12. Импортируем дамп базы данных Roundcube в MariaDB
cd /var/www/html && mysql -u rcuser -p roundcubedb < /var/www/html/SQL/mysql.initial.sql
13. Настраиваем Apache для работы Roundcube - задаем имя хоста, индексный файл и предоствляем права на корневой каталог
nano /etc/apache2/sites-enabled/000-default.conf
14. и вносим:
<VirtualHost *:80> ServerName xn----gtbdaqueeage2s.xn--p1ai ServerAdmin webmaster@xn----gtbdaqueeage2s.xn--p1ai DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined <Directory /> Options FollowSymLinks AllowOverride All Require all granted </Directory> <Directory /var/www/html/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all Require all granted DirectoryIndex index.php </Directory> </VirtualHost>
15. Перезапускаем Apache и проверяем статус службы
systemctl reload apache2 && systemctl status apache2
16. Отключаем авторизацию Roundcube в почтовый сервер, так как почтовый сервер находится на localhost
nano /var/www/html/config/defaults.inc.php
17. и изменяем:
$config['smtp_user'] = ; $config['smtp_pass'] = ;
18. Переходим по ссылке и завершаем установку Roundcube
http://доменное-имя.рф/installer/
19. В качестве адресов подключения указываем localhost, порт 143 для входящей электронной почты и 25 для исходящей 20. Проходим тесты подключения и завершаем настройку, затем переименовываем папку installer командой:
mv /var/www/html/installer/ /var/www/html/installer_old/
Настройка межсетевого экрана
1. Настраиваем фаерволл
apt install ufw -y
2. Настраиваем правила фаерволла
ufw default deny incoming && ufw default allow outgoing ufw allow 22 && ufw allow 25 && ufw allow 80 && ufw allow 443 && ufw allow 465 && ufw allow 143 && ufw allow 993 && ufw allow 995 ufw enable
3. Проверяем список правил и статус службы фаерволла
ufw verbose numbered systemctl status ufw
4. Установка и настройка завершена! Перезагружаем удаленный сервер
reboot
5. Авторизация в веб-интерфейсе Roundcube должна работать для обоих адресов - info@xn----gtbdaqueeage2s.xn--p1ai и info@доменное-имя.рф. При отправке писем на любой из этих адресов письма должны доходить равнозначно!